package com.example.generic_.generic01;

import java.util.ArrayList;

/**
 * 泛型介绍(广泛的类型)
 * 1. 泛型又称参数化类型, 是jdk5.0出现的新特性, 解决数据类型的安全性问题
 * 2. 在类声明或实例化时只要制定好需要的具体的类型即可
 * 3. Java泛型可以保证如果程序在编译时没有发出警告, 运行时就不会产生
 *    ClassCastException异常. 同时, 代码更加简洁,健壮
 * 4. 泛型的作用是: 可以在类声明时通过一个标识表示类中某个属性的类型,
 *    或者是某个方法的返回值的类型, 或者是参数类型
 */
public class Generic02 {
    public static void main(String[] args) {
        //使用泛型添加arraylist

        ArrayList<Dog> arrayList = new ArrayList<Dog>();
        arrayList.add(new Dog("旺财", 10));
        arrayList.add(new Dog("发财", 1));
        arrayList.add(new Dog("小黄", 5));

        //程序员不小心添加了一个猫类
//        arrayList.add(new Cat("tom", 5));//这里ide会直接爆红, 要求只能添加Dog类

        //遍历
        for (Dog dog : arrayList) {
            //这里不需要向下转型了
            System.out.println(dog.getName() + "-" + dog.getAge());
        }
    }
}
